
package com.fyzk.utils;

import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;

import com.fyzk.activity.app.App;

import java.io.File;

/**
 * 日志输出类
 * @author shiqing  2015-6-15
 *
 */
public class LogUtil {

    public static String customTagPrefix = "x_log";
    public static boolean isDebug = true;


    private LogUtil() {
    }

    private static String generateTag() {
        String tag = "%s.%s(L:%d)";
        try{
            StackTraceElement caller = new Throwable().getStackTrace()[2];
            String callerClazzName = caller.getClassName();
            callerClazzName = callerClazzName.substring(callerClazzName.lastIndexOf(".") + 1);
            tag = String.format(tag, callerClazzName, caller.getMethodName(), caller.getLineNumber());
            tag = TextUtils.isEmpty(customTagPrefix) ? tag : customTagPrefix + ":" + tag;
        }catch (NullPointerException e){
            Log.e("LogUtil",e.getMessage());
        }

        return tag;
    }

    public static void d(String content) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug){
            Log.d(tag, content);
        }
    }

    public static void d(String content, Throwable tr) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.d(tag, content, tr);
        }
    }

    public static void e(String content) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.e(tag, content);
        }
    }

    public static void e(String content, Throwable tr) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.e(tag, content, tr);
        }
    }

    public static void i(String content) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.i(tag, content);
        }
    }

    public static void i(String content, Throwable tr) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.i(tag, content, tr);
        }
    }

    public static void v(String content) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.v(tag, content);
        }
    }

    public static void v(String content, Throwable tr) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.v(tag, content, tr);
        }
    }

    public static void w(String content) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.w(tag, content);
        }
    }

    public static void w(String content, Throwable tr) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.w(tag, content, tr);
        }
    }

    public static void w(Throwable tr) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.w(tag, tr);
        }
    }


    public static void wtf(String content) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.wtf(tag, content);
        }
    }

    public static void wtf(String content, Throwable tr) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.wtf(tag, content, tr);
        }
    }

    public static void wtf(Throwable tr) {
//        if (!x.isDebug()) return;
        String tag = generateTag();
        if(isDebug) {
            Log.wtf(tag, tr);
        }
    }


//    public static void logToFile(String content){
//
//        FileWriter fwriter = null;
//        try {
//            fwriter = new FileWriter(getSdcardPath()+"/lcc",false);
//            fwriter.write(content);
//        } catch (IOException ex) {
//            ex.printStackTrace();
//        } finally {
//            try {
//                fwriter.flush();
//                fwriter.close();
//            } catch (IOException ex) {
//                ex.printStackTrace();
//            }
//        }
//
//    }


    /**
     * SD卡路径
     *
     * @return String
     */
    private static String getSdcardPath() {

        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {

            File cacheDir = StorageUtils.getCacheDirectory(App.getContext());

            if (!cacheDir.exists()) {
                cacheDir.mkdirs();
            }
            String path = cacheDir.getAbsolutePath();
            LogUtil.v("path........."+path);
            return path;
        } else if ((new File("/mnt/sdcard2")).exists()) {
            // 特殊的手机，如中兴V955,存储卡为sdcard2
            String path = "/mnt/sdcard2/dwj/";

            File f = new File(path);
            if (!f.exists()) {
                f.mkdirs();
            }
            LogUtil.v("path........."+path);
            return path;
        } else {
//            Toast.makeText(getApplicationContext(), "未检测到sd卡",
//                    Toast.LENGTH_SHORT).show();
            return "";
        }
    }


}

